#include <NTest.h>
#include <vector>

NUNIT(TestUnit0, 0)
{
	NPAUSE("here run the test unit!!");
}

NUNIT(TestUnit1, 2)
{

}

NUNIT(TestUnit2, 0)
{

}


NCASE(TestVector)
{
	NTEST(TestVectorPushItem)
	{
		std::vector<int> Array;
		Array.push_back(3);
		Array.push_back(4);
		Array.push_back(5);

		int ArraySample[] = { 3, 4, 5 };

		NEQ(Array.size(), 3);
		NARRAYEQ(ArraySample, &Array[0], 3);
	}

	NTEST(TestVectorInsertItem)
	{
		std::vector<int> Array;
		Array.push_back(3);
		Array.push_back(4);
		Array.push_back(5);

		Array.insert(Array.begin() + 1, 3);
		NEQ(Array.size(), 4);
		int ArraySample[] = { 3, 3, 4, 5 };
		NARRAYEQ(ArraySample, &Array[0], 4);
	}

	NTEST(TestVectorRemoveItem)
	{
		std::vector<int> Array;
		Array.push_back(3);
		Array.push_back(4);
		Array.push_back(5);

		Array.erase(Array.begin() + 1);

		NEQ(Array.size(), 2);
		int ArraySample[] = { 3, 5 };
		NARRAYEQ(ArraySample, &Array[0], 2);
	}
};

NADD(TestVector)

NCASE(TestAssertion)
{
	NTEST(TestNumber)
	{
		NCHECK(3 == 3);
		NTRUE(1);
		NFALSE(!3);
		NEQ(1024, 1024);
		NNE(1024, 1023);
		NLT(1023, 1024);
		NLE(1023, 1023);
		NLE(1023, 1024);
		NGT(1024, 1023);
		NGE(1024, 1023);
		NGE(1024, 1024);

		NFEQ(3.00000001, 3.000000000001);
	}

	NTEST(TestString)
	{
		NSTREQ("hello ntest", "hello ntest");
		NSTRNE("hello ntest", "hello NTEST");
		NSTREQ(L"hello ntest", L"hello ntest");
		NSTRNE(L"hello ntest", L"hello NTEST");

		NSTRSM("hello ntest", "hello NTest");
		NSTRNS("hello ntest", "hello TESTN");
		NSTRSM(L"hello ntest", L"hello NTest");
		NSTRNS(L"hello ntest", L"hello TESTN");
	}
};

NADD(TestAssertion)

NCASE(IdCaseSample3)
{
	NTEST(TestFuncsSample)
	{

	}
};

NREG(IdCaseSample3, 2)

NCASE(IdCaseSample4)
{

};

NREG(IdCaseSample4, 2);